<?php
define ("HASH_KEY","sha256");
define ("TEXT_KEY","/()546HkTFA$%&_");

class Criptografia {
//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * setea las claves de seguridad
   * @param <type> $securekey
   * @param <type> $iv
   * @author VSR, 01/01/2011
   */
  private static function setSecurityKey(&$securekey, &$iv){
    try {
      $securekey = hash(HASH_KEY,TEXT_KEY,TRUE);
      $iv = mcrypt_create_iv(32);
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Compartidos">
  /**
   * encripta un texto
   * @param <type> $texto
   * @return <type>
   * @author VSR, 01/01/2011
   */
  public static function encriptar($texto) {
    try {
      self::setSecurityKey($securekey, $iv);
      $texto =  base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $securekey, $texto, MCRYPT_MODE_ECB, $iv));
    } catch (Exception $e) {
      $texto = "";
    }
    return $texto;
  }

  /**
   * desencripta un texto
   * @param <type> $texto
   * @return <type>
   * @author VSR, 01/01/2011
   */
  public static function desencriptar($textoEncriptado) {
    try {
      self::setSecurityKey($securekey, $iv);
      $texto =  trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $securekey, base64_decode($textoEncriptado), MCRYPT_MODE_ECB, $iv));
    } catch (Exception $e) {
      $texto = "";
    }
    return $texto;
  }

  /**
   * encripta una URL
   * @param <type> $texto
   * @return <type>
   * @author VSR, 01/01/2011
   */
  public static function encriptarURL($texto){
    try {
      $texto = self::encriptar($texto);
      $texto = urlencode($texto);
    } catch (Exception $e) {
      $texto = "";
    }
    return $texto;
  }

  /**
   * desencripta una URL
   * @param <type> $texto
   * @return <type>
   * @author VSR, 01/01/2011
   */
  public static function desencriptarURL($textoEncriptado){
    try {
      $textoEncriptado = urldecode($textoEncriptado);
      $textoEncriptado = self::desencriptar($textoEncriptado);
    } catch (Exception $e) {
      $textoEncriptado = "";
    }
    return $textoEncriptado;
  }

//</editor-fold>
}

?>
